import datetime
from dateutil import rrule
import time

class TimeHelper():
    def getMonthRangList(self, start_month, end_month):
        """
        从开始日期到结束日期查询存在的月份列表，除去本月的数据
        :param start_month:
        :param end_month:
        :return:
        """
        start_time = datetime.datetime.strptime(start_month, "%Y-%m")
        end_time = datetime.datetime.strptime(end_month, "%Y-%m")
        month_count = rrule.rrule(rrule.MONTHLY, dtstart=start_time, until=end_time).count()
        now_month = datetime.datetime.strptime(str(datetime.datetime.now())[:7], "%Y-%m")
        if start_time == now_month == end_time:
            return []
        else:
            month_list = []
            for x in range(month_count):
                year, month = [int(y) for y in str(start_time)[:7].split("-")]
                month = month + x
                if month > 12:
                    year += 1
                    month -= 12
                elif month < 1:
                    year -= 1
                    month += 12
                year, month = str(year), str(month)
                if len(month) == 1:
                    month = "0" + month
                month_list.append(year + "-" + month)
            if str(now_month)[:7] in month_list:
                month_list.remove(str(now_month)[:7])
            return month_list

    def getCurrentDateStr(self, pattern):
        """
        将当前日期转换成字符串返回
        '%Y%m%d'    20190801
        '%d%m%Y'    01082019
        '%Y-%m-%d'  2019-08-01
        :return:
        """
        return time.strftime(pattern)

    def getCurrentTimeStr(self, pattern):
        """
        将当前日期转换成字符串返回
        '%Y%m%d%H%M%S'    20190801151900
        :return:
        """
        return time.strftime(pattern)

# s = TimeHelper().getMonthRangList("2019-08", "2021-02")
# print(s)